pv-on-hvm: Avoid rwlock livelock on save/restore.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 21 Oct 2008 09:04:40 +0000 (10:04 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 21 Oct 2008 09:04:40 +0000 (10:04 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c

index 92b64e25895933690a9d546cb76b9a43abf966b4..08bf645ef77663ebfc0ebb69d03bdd5ecfe78487 100644 (file)
@@ -11,12 +11,6 @@ struct ap_suspend_info {
        atomic_t nr_spinning;
 };
 
-/*
- * Use a rwlock to protect the hypercall page from being executed in AP context
- * while the BSP is re-initializing it after restore.
- */
-static DEFINE_RWLOCK(suspend_lock);
-
 #ifdef CONFIG_SMP
 
 /*
@@ -33,12 +27,8 @@ static void ap_suspend(void *_info)
        atomic_inc(&info->nr_spinning);
        mb();
 
-       while (info->do_spin) {
+       while (info->do_spin)
                cpu_relax();
-               read_lock(&suspend_lock);
-               HYPERVISOR_yield();
-               read_unlock(&suspend_lock);
-       }
 
        mb();
        atomic_dec(&info->nr_spinning);
@@ -61,9 +51,7 @@ static int bp_suspend(void)
        suspend_cancelled = HYPERVISOR_suspend(0);
 
        if (!suspend_cancelled) {
-               write_lock(&suspend_lock);
                platform_pci_resume();
-               write_unlock(&suspend_lock);
                gnttab_resume();
                irq_resume();
        }